﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Padelcenter.Common
{
    public class Producto : CommonInterface
    {
        public Producto() 
        {
            this.ResetParams();
        }

        public void ResetParams()
        {
            this.IdProducto         = 0;
            this.IdProductoPadre    = 0;
            this.TipoProducto       = new TipoProducto();
            this.Marca              = new Marca();
            this.Disponibilidad     = new Disponibilidad();
            this.Descripcion        = string.Empty;
            this.Peso               = 0;
            this.Largo              = 0;
            this.Ancho              = 0;
            this.Alto               = 0;
            this.EnvioCalculaPorPeso= false;
            this.FechaAlta          = Convert.ToDateTime("1900-01-01");
            this.ConFiltroActivo    = false;
            this.Activo             = true;
        }

        private int _idProducto;
        private int _idProductoPadre;
        private TipoProducto _tipoProducto;
        private Marca _marca;
        private Disponibilidad _disponibilidad;
        private string _descripcion;
        private int _peso;
        private int _largo;
        private int _ancho;
        private int _alto;
        private bool _envioCalculaPorPeso;
        private bool _conFiltroEnvioCalculaPorPeso;
        private DateTime _fechaAlta;
        private bool _conFiltroActivo;
        private bool _activo;

        public bool Activo
        {
            get { return _activo; }
            set { _activo = value; }
        }

        public bool ConFiltroActivo
        {
            get { return _conFiltroActivo; }
            set { _conFiltroActivo = value; }
        }

        public DateTime FechaAlta
        {
            get { return _fechaAlta; }
            set { _fechaAlta = value; }
        }

        public bool ConFiltroEnvioCalculaPorPeso
        {
            get { return _conFiltroEnvioCalculaPorPeso; }
            set { _conFiltroEnvioCalculaPorPeso = value; }
        }

        public bool EnvioCalculaPorPeso
        {
            get { return _envioCalculaPorPeso; }
            set { _envioCalculaPorPeso = value; }
        }

        public int Alto
        {
            get { return _alto; }
            set { _alto = value; }
        }

        public int Ancho
        {
            get { return _ancho; }
            set { _ancho = value; }
        }

        public int Largo
        {
            get { return _largo; }
            set { _largo = value; }
        }
        public int Peso
        {
            get { return _peso; }
            set { _peso = value; }
        }

        public string Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }

        public Disponibilidad Disponibilidad
        {
            get { return _disponibilidad; }
            set { _disponibilidad = value; }
        }

        public Marca Marca
        {
            get { return _marca; }
            set { _marca = value; }
        }

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }

        public int IdProductoPadre
        {
            get { return _idProductoPadre; }
            set { _idProductoPadre = value; }
        }

        public int IdProducto
        {
            get { return _idProducto; }
            set { _idProducto = value; }
        }
    }

    public class ProductoDescripcion : CommonInterface
    {
        public ProductoDescripcion() 
        {
            this.ResetParams();
        }

        public void ResetParams()
        {
            this.Producto       = new Producto();
            this.Idioma         = new Idioma();
            this.Descripcion    = string.Empty;
            this.Nombre         = string.Empty;
        }

        private Producto _producto;
        private Idioma _idioma;
        private string _descripcion;
        private string _nombre;

        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        public string Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }

        public Idioma Idioma
        {
            get { return _idioma; }
            set { _idioma = value; }
        }

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class ProductoPropiedad : CommonInterface
    {
        public ProductoPropiedad() 
        {
            this.ResetParams();
        }

        public void ResetParams()
        {
            this.Producto   = new Producto();
            this.Propiedad  = new Propiedad();
        }

        private Producto _producto;
        private Propiedad _propiedad;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class ProductoPrecio : CommonInterface
    {
        public ProductoPrecio() 
        {
            this.ResetParams();
        }

        public void ResetParams()
        {
            this.Producto = new Producto();
            this.Zona = new Zona();
            this.Precio = 0;
        }

        private Producto _producto;
        private Zona _zona;
        private double _precio;

        public double Precio
        {
            get { return _precio; }
            set { _precio = value; }
        }

        public Zona Zona
        {
            get { return _zona; }
            set { _zona = value; }
        }

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }

    public class ProductoMedia : CommonInterface
    {
        public ProductoMedia() 
        {
            this.ResetParams();
        }

        public void ResetParams()
        {
            this.Producto = new Producto();
            this.Media = new Media();
            this.ConFiltroEsPrincipal = false;
            this.EsPrincipal = false;
        }

        private Producto _producto;
        private Media _media;
        private bool _conFiltroEsPrincipal;
        private bool _esPrincipal;

        public bool EsPrincipal
        {
            get { return _esPrincipal; }
            set { _esPrincipal = value; }
        }

        public bool ConFiltroEsPrincipal
        {
            get { return _conFiltroEsPrincipal; }
            set { _conFiltroEsPrincipal = value; }
        }

        public Media Media
        {
            get { return _media; }
            set { _media = value; }
        }

        public Producto Producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
    }
}
